void main(){

// 命名规则：数字字母下划线，不能数字开头，不能是关键字和保留字

// 引用规则：在字符串来用$引用变量，类似shell只支持双引号和多行字符串不支持单引号。

// var由编译器自己猜变量类型
  var var_value="自识别类型变量";

// 指定类型变量，字符串支持单引号双引号和三个单引号或双引号
  String str1="字符串类型";
  String str2='单引号字符串';
  String str3='''
多行字符串

换行也会被识别
''';
print(str1+str2+str3+var_value);

// 数字类型
  int int_value1=123;
  double double_value1=123.00;

// 常量,const固定常量和final可用于函数返回值的常量
  const const_value1=123;
  final final_value1;
  final_value1="可以先声明再定义的常量";

// bool类型
  bool flag1=true;
  bool flag2=false;
print(int_value1+const_value1+final_value1+double_value1);
print(flag1|flag2);
// 集合
  var l1=["字符串",20,true];

  print(l1);

  l1[1]='年龄';
  print(l1);

// 数组
  List list=<String>[];
  // 增删改查
  list.add("张三");     // 列表.单个增操作
  list.addAll(["李四","王五","张三"]);  // 列表.多个增操作

  list.remove('张三'); // 列表.单个删除base内容
  list.removeAt(2);  //列表.单个删除base下标

  list[2]='张三被修改了'; // 列表.基本修改
  list.fillRange(0,1,'李四被修改'); //列表.单个改操作
  list.fillRange(0,2,["李四王五都被修改成了列表","并不是分别修改，而是重复修改"]);

  list.indexOf('张三',1); // 列表.查，从下标1开始，默认从0开始，可以不指定
  list.indexWhere((i) {return i=='张三';},2);  // 列表.查，按照条件查找到第一个符合的内容,下标2可不指定


  print(list.length);  // 列表长度
  print(list.isEmpty);  // 是否为空
  print(list.isNotEmpty);
  print(list.indexOf("李四"));    // 按内容查找 
  print(list.reversed.toList());  // 反转排序且改变类型，并转换为列表
  List l_3=List.filled(2,""); //创建定长列表
print(l_3);
  
  
  
}


